home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / html / faqs / faq / os-research / part3 < prev    next >
Encoding:
Text File  |  1995-07-25  |  24.1 KB  |  542 lines

  1. Subject: Comp.os.research: Frequently answered questions [3/3]
  2. Newsgroups: comp.os.research,comp.answers,news.answers
  3. From: bosullvn@tcd.ie (Bryan O'Sullivan)
  4. Date: 1 Nov 1994 09:59:37 GMT
  5.  
  6. Archive-name: os-research/part3
  7. Version: $Revision: 1.1 $
  8. Last-Modified: $Date: 1994/08/29 14:16:25 $
  9.  
  10.         Answers to frequently asked questions
  11.           for comp.os.research: part 3 of 3
  12.  
  13.               Copyright (C) 1994
  14.                Bryan O'Sullivan
  15.  
  16.  
  17.  
  18.               TABLE OF CONTENTS
  19.  
  20.  
  21. 1.     Distributed systems
  22. 1.1.   What is the current status of the (insert name) project?
  23. 1.2.   How do approaches to load balancing differ?
  24. 1.3.   Fault tolerance in distributed systems
  25. 1.4.   Naming in distributed systems
  26. 1.5.   Distributed shared memory
  27. 1.5.1. Data consistency
  28. 1.5.1.1. Strictly consistent systems
  29. 1.5.1.2. Relaxing consistency
  30. 1.5.1.3. Application-specific coherence
  31. 1.5.2. Access synchronisation
  32. 1.5.3. Transfer and caching granularity
  33. 1.5.4. Address space structure
  34. 1.5.5. Fault tolerance
  35. 1.5.6. A brief bibliography on distributed shared memory
  36. 1.6.   What have we learned?
  37.  
  38. 2.     Needful things
  39.  
  40.  
  41.  
  42. ------------------------------
  43. Subject: [1] Distributed systems
  44. From: Distributed systems
  45.  
  46. A great deal of the high-profile research carried out in operating
  47. systems these days deals with distributed computing.  Not
  48. surprisingly, discussions of distributed systems make up a large
  49. amount of the traffic on comp.os.research.
  50.  
  51. ------------------------------
  52. Subject: [1.1] What is the current status of the (insert name) project?
  53. From: Distributed systems
  54.  
  55. See the section on `available software' for information on
  56. distributions of some of the systems mentioned here.
  57.  
  58. - The Amoeba project is still going.  There are roughly 20 people
  59.   working on it, but most of these are no longer kernel hackers.  They
  60.   are working on using it for parallel programming, wide-area
  61.   distributed systems, and other things.  Amoeba is used in over 100
  62.   universities at the moment, and is also used at commercial
  63.   institutions.
  64.  
  65. - Cronus is still under development at BBN.  The current public
  66.   release is 3.0.  The project currently has two thrusts---as the base
  67.   for advanced distributed system R&D, and as a platform for
  68.   constructing and deploying sophisticated distributed applications.
  69.  
  70.   Ongoing research topics include the integration of Cronus and Mach
  71.   technology, the exploration of techniques for the construction of
  72.   WAN-based and multi-organisational applications, investigation into
  73.   the integration of distributed systems and network management
  74.   systems, and work in high-performance distributed computing.
  75.  
  76. - Horus is being developed by the same group that worked on Isis; the
  77.   head of this group is Robbert van Renesse.
  78.  
  79. - Isis is no longer being developed at Cornell; it is now managed as a
  80.   commercial product.
  81.  
  82. - Mach: awaiting response from rfr
  83.  
  84. - Plan 9 is currently being restructured to make good use of a 300MBPS
  85.   fibre-optic network.  A general release of the system is under
  86.   consideration at the moment.
  87.  
  88. - QNX is a commercial POSIX-certified realtime OS with an installed
  89.   base of over 250,000 systems.  It is used extensively in process
  90.   control, factory automation, medical instrumentation, communications
  91.   and point-of-sale.  A number of universities are also doing research
  92.   with QNX.
  93.  
  94. - The Sprite network operating system project is winding down.  The
  95.   user community is shrinking, and only three people are currently
  96.   using the system as a basis for graduate research.  Sprite is
  97.   continuing to be used as the testbed for the Berkeley RAID project.
  98.  
  99. ------------------------------
  100. Subject: [1.2] How do approaches to load balancing differ?
  101. From: Distributed systems
  102.  
  103. Load-balancing policy falls into two broad groups: static and dynamic.
  104. Static policies use algorithms which operate without regard to
  105. run-time loads across a system, while dynamic policies use the
  106. run-time performance of various parts of a system in order to make
  107. more `informed' decisions about balancing.
  108.  
  109. [92-11-06-12-53.57] A dynamic load-balancing policy is one which uses
  110. run-time state information in making scheduling decisions.
  111.  
  112. There are two kinds of dynamic policies: adaptive and non-adaptive.
  113. The latter always use the same (fixed, load-dependent) policy; the
  114. former may adjust policy parameters in order to gradually improve
  115. their performance.
  116.  
  117. The key point is that while non-adaptive policies use only the
  118. information about the run-time state, adaptive policies use, in
  119. addition to this, information about current performance.
  120.  
  121. In adaptive policies, the rules for adjusting policy parameters may be
  122. static or dynamic.  An example of the former might be: `shift to a
  123. conservative migration rule when system-wide load patterns are varying
  124. too rapidly'.  An example of the latter could be: `increase
  125. sender-side threshold when migrated jobs cause slowdown rather than
  126. speedup'.  Some researchers refer to the performance-driven adaptation
  127. exhibited by the second policy as `learning'.
  128.  
  129. Since both non-adaptive policies and adaptive policies with static
  130. rules really use only load information, it is confusing to distinguish
  131. between them.  One way to avoid such confusion is to restrict the use
  132. of the word `adaptive' to policies that use performance feedback in
  133. order to drive their adjustment of policy parameters.
  134.  
  135. ------------------------------
  136. Subject: [1.3] Fault tolerance in distributed systems
  137. From: Distributed systems
  138.  
  139. One approach to providing fault tolerance in distributed systems
  140. involves the use of redundant services, such that standby facilities
  141. can become active in the event of the failure of, or loss of
  142. connection to, a primary service.
  143.  
  144. Another approach is to provide multiple paths of connectivity between
  145. the computers that make up the distributed system.  The QNX system,
  146. for example, supports multiple network drivers per node.  The purpose
  147. of the network connection under QNX is to merge the microkernels on
  148. the LAN into a single logical kernel.  Hence, if multiple LAN
  149. connections per node are present, the networking code can load balance
  150. the LAN traffic on the paths available.  It can also route around
  151. failed links, providing both greater LAN bandwidth and better fault
  152. tolerance.
  153.  
  154. See below for treatment of fault tolerance in systems which make use
  155. of distributed shared memory.
  156.  
  157. ------------------------------
  158. Subject: [1.4] Naming in distributed systems
  159. From: Distributed systems
  160.  
  161. [Material on naming and/or global naming sought.]
  162.  
  163. ------------------------------
  164. Subject: [1.5] Distributed shared memory
  165. From: Distributed systems
  166.  
  167. Distributed computer systems have evolved using message passing as
  168. their main method of communication.  Other communication systems used
  169. in loosely coupled distributed systems, such as RPC, are usually
  170. implemented on top of an underlying message passing system.  On the
  171. other hand, in tightly coupled systems, such as a multi-processor
  172. machine, the communication method used is usually shared memory.
  173.  
  174. In distributed shared memory (DSM) systems [Nitzberg & Lo, 91],
  175. processes share data transparently across node boundaries; data
  176. faulting, location, and movement is handled by the underlying system.
  177. Among other things, this allows parallel programs designed to use
  178. shared memory to execute transparently on a loosely coupled
  179. distributed system.  While the performance implications cannot be
  180. ignored, the advantages of the shared memory programming model are
  181. well known:
  182.  
  183. - Shared memory programs are usually shorter and easier to understand
  184.   than equivalent message passing programs.
  185.  
  186. - Large or complex data structures may easily be communicated.
  187.  
  188. - Shared memory gives transparent process-to-process communication.
  189.  
  190. - Programming with shared memory is a well-understood problem.
  191.  
  192. Shared-memory (or `procedure-oriented') and message-oriented operating
  193. systems are, in some sense, equivalent [Lauer & Needham, 78], though
  194. it has been claimed that the former are `more powerful' [Tam et al.,
  195. 90].
  196.  
  197. ------------------------------
  198. Subject: [1.5.1] Data consistency
  199. From: Distributed systems
  200.  
  201. Despite recent advances in both local and wide-area networking
  202. technologies, network latency is still a major factor in distributed
  203. systems and likely to remain so.  All DSM systems provide some sort of
  204. caching in an attempt to improve the performance beyond that provided
  205. by doing a network access on every reference to a non-local data item.
  206. Each system must decide whether or not to attempt to keep the data
  207. coherent, and, if so, what coherence strategy to use.  The coherence
  208. semantics which may be provided to the programmer include:
  209.  
  210. - `strict' consistency, where a read always returns the value written
  211.   by the most recent write
  212.  
  213. - a `loosely' consistent system where the system enforces some form of
  214.   weak consistency guarantees and the application (or compiler or
  215.   user) can indicate synchronisation points where consistency must be
  216.   enforced;
  217.  
  218. - no automatic consistency mechanism, but provide the user with the
  219.   facilities necessary to implement user level synchronisation and
  220.   consistency.
  221.  
  222. ------------------------------
  223. Subject: [1.5.1.1] Strictly consistent systems
  224. From: Distributed systems
  225.  
  226. Older, strictly consistent systems tend to enforce a single writer,
  227. multiple reader model, where at any time data will be held either at a
  228. single node (which may have write access) or several nodes (none of
  229. which may have write access).
  230.  
  231. Given this model, we must be able to locate a copy of our data when it
  232. is not resident.  The method most frequently used is to assign an
  233. `owner' to each item of data, where the owner has either the only
  234. writeable copy of the data, or one of the read-only copies.  Ownership
  235. may remain fixed throughout the life of a datum, or it may change
  236. dynamically.  In the latter case, the problem arises of locating the
  237. owner.  A database of locations may be maintained by centralised
  238. managers, or ownership information can be distributed among nodes of
  239. the system [Li and Hudak, 89].
  240.  
  241. In a strictly consistent system, we must also be able to synchronise
  242. writes.  The two major solutions to this problem are:
  243.  
  244. - Write broadcast.  The effects of every write are broadcast to ever
  245.   node that has a copy of the data being written; this effectively
  246.   implements a replication algorithm.  Write broadcast is usually
  247.   considered too expensive to be used as a general solution.
  248.  
  249. - Write invalidation.  Each node in the system holding a read-only
  250.   copy of the data being written is sent an invalidation message.
  251.  
  252. ------------------------------
  253. Subject: [1.5.1.2] Relaxing consistency
  254. From: Distributed systems
  255.  
  256. Permitting temporary inconsistencies is a common method of increasing
  257. performance in distributed systems.  Memory is said to be loosely
  258. coherent if the value returned by a read operation is the value
  259. written by an update operation to the same object that `could' have
  260. immediately preceded the read operation in some legal schedule of the
  261. threads in execution [Bennett et al., 90].
  262.  
  263. Using loose coherence, more than one thread may have write access to
  264. the same object, provided that the programmer knows that the writes
  265. will not conflict.
  266.  
  267. Another memory consistency model is `release consistency'
  268. [Gharachorloo et al., 90], in which memory accesses are divided into
  269. ordinary and synchronisation-related accesses.  The latter are further
  270. divided into `acquire' and `release' operations.  The `acquire'
  271. operation indicates that shared data is needed, and a processor's
  272. updates are not guaranteed to be performed at other nodes until a
  273. `release' is performed.  The primary advantage of this form of
  274. consistency is that it allows consistency updates to be tied to
  275. synchronisation events, and therefore to be delayed until actually
  276. needed by applications.  However, most release consistent systems
  277. require the programmer to make explicit use of `acquire' and `release'
  278. operations.
  279.  
  280. A DSM system called Midway introduces another new consistency model,
  281. `entry consistency' [Bershad et al., 93].  Entry consistency is weaker
  282. than many of the other models suggested, including release
  283. consistency; it requires explicit annotations to associate
  284. synchronisation objects and data.  On an `acquire', only the data
  285. associated with the synchronisation object is guaranteed to be
  286. consistent.  This extra weakness permits higher performance
  287. implementations of the underlying consistency protocols to be written.
  288. Midway also supports stronger consistency models, so that the
  289. application programmer can trade-off performance against the extra
  290. effort required to write entry consistent programs.
  291.  
  292. ------------------------------
  293. Subject: [1.5.1.3] Application-specific coherence
  294. From: Distributed systems
  295.  
  296. From [Cheriton, 86]:
  297.   `Problem-oriented shared memory' is a shared memory that implements
  298.   fetch and store operations specialised to the particular problem or
  299.   application it is supporting.  In particular, a problem-oriented
  300.   shared memory commonly provides a specialised form of consistency
  301.   and consistency maintenance that exploits application-specific
  302.   semantics.
  303. Cheriton goes on to propose that consistency constraints be relaxed
  304. and more use be made of problem semantics.  He suggests that, in some
  305. cases, stale data may be detected on use by the client, and the client
  306. may then recover.  A example would be hint caching.  In some
  307. applications, stale data may actually be sufficiently accurate,
  308. provided that the client can obtain up to date information when
  309. necessary.  In other applications, some data may be optional in the
  310. sense that the client can continue without it.  Other applications may
  311. tolerate having the results of store operations being lost or undone,
  312. for example, an application that regularly updates the entire data
  313. set.
  314.  
  315. Another approach is presented by the designers of Munin, where the
  316. runtime system accepts hints from the compiler or user to determine
  317. the coherence mechanism to be used for each object.  The default, in
  318. the absence of hints, is to use a general read-write consistency
  319. mechanism, much like that employed by IVY.  Munin supports several
  320. different object types that are based on the results of a survey of
  321. shared memory access characteristics.  The results of the survey
  322. showed that a very small percentage of all accesses to shared data
  323. fall under the general read-write type.  The Munin designers also note
  324. that a program moves through various stages of execution, and the
  325. types associated with objects change as time progresses
  326.  
  327. ------------------------------
  328. Subject: [1.5.2] Access synchronisation
  329. From: Distributed systems
  330.  
  331. Most parallel applications will use some sort of synchronisation
  332. system to order and control accesses to shared data before actually
  333. accessing the data.  The most important thing to note in DSM systems
  334. is that just blindly using standard test and set operations on bytes
  335. in shared pages will produce a high fault rate; faults are usually
  336. expensive, making this approach unacceptable.
  337.  
  338. Clouds merges locking with the cache consistency protocol, so that the
  339. user may obtain both a lock and the data in one network transaction.
  340. This system has the advantage that no invalidation messages are
  341. required, since the granting of the lock guarantees that there are no
  342. conflicting copies; it has the disadvantage that an explicit
  343. unlock/discard operation is required to release access to the data.
  344. This is acceptable in Clouds, as the DSM system was designed
  345. specifically to support object invocation, so it is easy to discard on
  346. a return.
  347.  
  348. Munin provides a distributed lock mechanism using `proxy objects' to
  349. reduce network load.  Proxy objects are maintained by a lock server on
  350. each node; when a thread wants to obtain a lock on an object, it
  351. attempts to lock the proxy instead.  The server obtains the global
  352. lock if it is not already held locally.  Global locking is done by
  353. negotiating with all the other lock servers in the system.  Each lock
  354. may be migrated from server to server, and part of the Munin system
  355. allows objects to be migrated along with their locks.
  356.  
  357. Other systems, such as IVY and Mermaid, use modified versions of classic
  358. multiprocessor synchronisation facilities.
  359.  
  360. ------------------------------
  361. Subject: [1.5.3] Transfer and caching granularity
  362. From: Distributed systems
  363.  
  364. When caching objects in local memory, it is necessary to decide what
  365. level of granularity to use.  All current systems use a fixed block
  366. size in the cache, rather than varying the granularity based on object
  367. size.  Usually this is due to constraints imposed by the system
  368. hardware and memory management.
  369.  
  370. The choice of the block size in the cache depends on several issues.
  371.  
  372. - Cost of communication: for example, on many local area networks
  373.   there is little difference between the time required to send a
  374.   one-byte message and that required to send a 1024-byte message.
  375.   Transmitting bulk changes rather than single-byte modifications
  376.   would therefore seem desirable.
  377.  
  378. - The choice of granularity also depends on the locality of reference
  379.   in the application, as thrashing may occur when two machines are
  380.   both accessing the same block (this is also known as the `ping-pong
  381.   effect').  This would seem to argue for a smaller block size.  It
  382.   should be noted that many object-oriented systems exhibit very poor
  383.   locality of reference.
  384.  
  385. In practice, a compromise must be achieved, as with conventional
  386. virtual memory systems.  Most systems use a block size which is the
  387. same as that of the virtual memory management unit on the system, or a
  388. multiple thereof.  Among other things, it allows the hardware to be
  389. used to help in the maintenance of consistency.  The choice is
  390. complicated somewhat when heterogeneous machines are being used, but
  391. in these cases, the lowest common multiple of hardware supported page
  392. sizes can usually be used.
  393.  
  394. The only major system that doesn't use a large block size is Memnet,
  395. in which a hardware based DSM system was implemented on a high speed
  396. token ring; a 32-byte block size was used instead [Delp & Farber].
  397. The choice of a small block size is appropriate, as the system is much
  398. closer to a shared memory multi-processor than it is to a software DSM
  399. system.  This is because the entire processor is blocked on a cache
  400. miss; the processor is not actually aware of the distributed nature of
  401. its address space.  Also, the ratio between remote and local memory
  402. access times is much lower than in the software based systems due to
  403. the dedicated token ring (200Mbps) and hardware assistance.
  404.  
  405. ------------------------------
  406. Subject: [1.5.4] Address space structure
  407. From: Distributed systems
  408.  
  409. In a single shared address space system, the system appears as a set
  410. of threads executing in a shared distributed address space.  Objects
  411. always appear at the same addresses on all nodes.  Single address
  412. space systems have had a resurgence in popularity with the arrival of
  413. 64-bit processors.  A number of researchers believe that a 64-bit
  414. address space is large enough to act as a single global address space
  415. for all the memory (both primary and secondary) in a distributed
  416. system.  Examples of such systems include Angel, Mungi, and Opal.
  417. Security and protection are a major problem in such systems, and
  418. current approaches either rely on hardware assistance or stochastic
  419. algorithms, or ignore the problem.
  420.  
  421. Another approach is to divide each process's address space into
  422. different fixed regions, some of which are private and not shared, and
  423. some of which are shared with some other processes.  Ra, the Clouds
  424. kernel, takes this approach using O, P, and K address regions, with
  425. the O region shared between all processes executing in a given object;
  426. the P and K regions are local to a process and kernel, respectively.
  427. Here objects always appear at the same address but may not be visible
  428. from every address space.  By contrast, some systems, including Mirage
  429. and Mach, allow shared data to exist at differing addresses in
  430. different processes address spaces.  However, neither system does
  431. transparent pointer translation, so the address changes are not
  432. entirely transparent to the application.
  433.  
  434. As for the structuring of the shared region itself, some systems --
  435. for example, IVY and Mether -- use a single flat region: one
  436. continuous range of virtual addresses represent the shared address
  437. space and are managed by the DSM system.  This single address space is
  438. usually sub-divided into pages.  Most systems use paged segmentation:
  439. the shared region consists of disjoint pieces, which are usually
  440. managed separately and are not all mapped in any one process.
  441. Frequently, the segments (sometimes called memory objects, or windows)
  442. are related to the backing store.  For example, in Clouds, the object
  443. address space consists of windows onto larger segments; these segments
  444. are usually maintained on secondary storage.
  445.  
  446. ------------------------------
  447. Subject: [1.5.5] Fault tolerance
  448. From: Distributed systems
  449.  
  450. Most DSM systems ignore the fault tolerance issue or maintain that it
  451. is an operating system issue and should be handled by the underlying
  452. system.  However, it would appear that in practice a DSM system would
  453. strongly effect the fault tolerance of a system.  For example, in a
  454. system where several systems are sharing access to a set of data, the
  455. failure of any one of them could lead to the failure of all the
  456. connected sites (or, at least, some of the processes on each site).
  457. We are also presented with an unusual failure handling problem.  It is
  458. fairly easy to see how to handle a failed message or RPC, but how do
  459. you handle a failed page fault?
  460.  
  461. The original Clouds system provided recoverability using shadowing of
  462. segments and a transactional system using commits.  The recovery
  463. system was not really integrated with the DSM system and was merely
  464. implemented at the segment storage site.  In order to maintain a
  465. consistent view of data when one transaction is active at multiple
  466. nodes, they have more recently been forced to integrate the
  467. transaction system with the DSM support system.
  468.  
  469. ------------------------------
  470. Subject: [1.5.6] A brief bibliography on distributed shared memory
  471. From: Distributed systems
  472.  
  473. [Nitzberg & Lo, 1991]
  474.   Nitzberg, W. and Lo, V., `Distributed shared memory: a survey of
  475.     issues and algorithms', IEEE Computer, August 91, pp. 52-60
  476.  
  477. [Lauer & Needham, 1978]
  478. [Tam et al., 90]
  479.   Tam, M.-C., Smith, J. M. & Farber, D. J., `A taxonomy-based
  480.     comparison of several distributed shared memory systems', ACM
  481.     Operating Systems Review 24(3), July 90, pp. 40-67
  482.  
  483. [Li and Hudak, 89]
  484.   Li, K. & Hudak, P., `Memory coherence in shared virtual memory
  485.     systems', ACM Transactions on Computer Systems 7(4), November 89,
  486.     pp. 321-359
  487.  
  488. [Bennett et al., 90]
  489.   Bennett, J. K., Carter, J. B. & Zwaenopoel, W., `Munin:
  490.     distributed shared memory based on type-specific memory
  491.     coherence', Proceedings of the 2nd ACM SIGPLAN Symposium on
  492.     Principles and Practice of Parallel Programming, SIGPLAN Notices
  493.     25(3), March 90, pp. 168-176
  494.  
  495. [Gharachorloo et al., 90]
  496.   Gharachorloo, K., et al., `Memory consistency and event ordering in
  497.     scalable shared-memory multiprocessors', ACM SIGARCH News 18(2),
  498.     June 90
  499.  
  500. [Bershad et al., 93]
  501.   Bershad, B. N., et al., `The Midway distributed shared memory
  502.     system', Technical Report CMU-CS-93-119, School of Computer
  503.     Science, Carnegie Mellon University, 1993.  Available via
  504.     anonymous ftp from
  505.     ftp.cs.cmu.edu:project/mach/public/doc/published/midway.ps.
  506.  
  507. [Cheriton, 86]
  508.   Cheriton, D. R., `Problem-oriented shared memory: a decentralized
  509.     approach to distributed system design', Proceedings of the 6th
  510.     International Conference on Distributed Computing Systems, May 86,
  511.     pp. 190-197
  512.  
  513. [Delp & Farber]
  514.   Delp, G. S. & Farber, D. J., `Memnet -- a different approach to a
  515.     network', Technical Report, Department of Electrical Engineering,
  516.     University of Delaware, ???
  517.  
  518.  
  519. ------------------------------
  520. Subject: [1.6] What have we learned?
  521. From: Distributed systems
  522.  
  523. Andy Tanenbaum started a (very long) thread on this topic in
  524. comp.os.research in April of 1992 [92-04-03-17-10.05].  The interested
  525. reader is directed to the comp.os.research archives, since this thread
  526. proved rather divisive (i.e. nobody really agreed on any issue).
  527.  
  528.  
  529. ------------------------------
  530. Subject: [2] Needful things
  531. From: Needful things
  532.  
  533. This FAQ is incomplete, and will probably remain in this state to a
  534. greater or lesser extent for ever and ever.  Should you feel willing
  535. to contribute some material, the following is a list of topics which
  536. ``urgently'' require treatment (some of which I may get around to
  537. covering myself at some point):
  538.  
  539. - naming in distributed systems
  540.  
  541.  
  542.